package com.test.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;

import org.apache.commons.codec.binary.Base64;

/**
 * 
 * @ClassName: TokenProccessor 
 * @Description: 生产token的工具类 
 * @author weiqi 
 * @date 2017年3月19日 下午11:22:55
 */
public class TokenProccessor {
	/**
	 * 单例设计模式(保证类的对象在内存中只有一个)
	 * 1.把类的构造函数私有
	 * 2.自己创造一个类的对象
	 * 3.对外提供一个方法,返回类的对象
	 */
	//把类的构造函数私有
	private TokenProccessor(){};
	//自己创造一个类的对象
	private static final TokenProccessor instance = new TokenProccessor();
	//对外提供一个方法,返回类的对象
	public static TokenProccessor getInstance() {
		return instance;
	}
	
	/**
	 * 生产token
	 */
	public String makeToken(){
		String token = ""+(System.currentTimeMillis() + new Random().nextInt(999999999));
		//数据指纹   128位长  16个字节  md5
		try {
			MessageDigest md = MessageDigest.getInstance("md5");
			byte md5[] = md.digest(token.getBytes());
			Base64 base64 = new Base64();
			return base64.encodeToString(md5);
		} catch (NoSuchAlgorithmException e){
			throw new RuntimeException(e);
		}
	}
}
